/**
 * gislin 2017年9月20日
 */
package com.btcode.orm.relation.ex;

import com.btcode.orm.model.IField;
import com.btcode.orm.model.IModel;

/**
 * @author gislin 2017年9月20日
 */
public interface IJoin {

    /**
     * 是否需要缓存 gislin 2017年9月20日
     */
    boolean isNeedCache();

    /**
     * 是否桥接关系，是的话 在查询的时候，不会显示 gislin 2017年9月20日
     */
    boolean isBridge();

    /**
     * 是否需要级联删除 gislin 2017年9月20日
     */
    boolean isNeedRelationDelete();

    void setIsNeedCache(boolean isNeedCache);

    void setIsNeedRelateDelete(boolean isNeedRelateDelete);

    void setMasterField(IField masterField);

    void setSlaveField(IField slaveField);

    void setIsBridge(boolean isBridge);

    /**
     * 主表的外键
     */
    IField getMasterField();

    /**
     * 关联表（从表）的主键（一般都是主键，也可以是其他）
     */
    IField getSlaveField();

    Class<IModel> getMasterModelClass();

    Class<IModel> getSlaveModelClass();

    /**
     * 主表的表名
     */
    String getMasterTableName();

    /**
     * 从表的表名
     */
    String getSlaveTableName();

}
